|
|
| Lokalizacja w menu |
|---|
| Surface → Fill boundary curves |
| Środowisko pracy |
| Powierzchnia 3D |
| Domyślny skrót |
| brak |
| Wprowadzono w wersji |
| 0.17 |
| Zobacz także |
| brak |
Polecenie Wypełnianie krzywych granicznych tworzy parametryczną powierzchnię z dwóch, trzech lub czterech krawędzi granicznych, próbując utworzyć płynne przejście między nimi.
Po lewej: krawędzie używane do generowania powierzchni za pomocą narzędzia Wypełnianie krzywych granicznych, cztery połączone krawędzie, trzy połączone krawędzie i dwie odłączone krawędzie. Po prawej: powierzchnia wynikowa z użycia odpowiednio czterech, trzech i dwóch krawędzi.
Uwaga: Po utworzeniu nie jest możliwe zastosowanie dodatkowych wiązań do utworzonej powierzchni.
Typ wypełnienia: Rozciągnięcie,
Coons, lub
Zakrzywienie.
Obiekt Wypełnianie krzywych granicznych (klasa Surface::GeomFillSurface) jest pochodną podstawowej klasy Część: Cecha (klasa Part::Feature, wraz z klasą podrzędną Part::Spline), dlatego też współdzieli wszystkie właściwości tej ostatniej.
Oprócz właściwości opisanych na stronie Cecha części, obiekt Rozszerz powierzchnię, posiada następujące właściwości w edytorze właściwości.
Podstawa
Enumeration): zastosowany algorytm wypełniania; Rozciągnięcie, styl z najbardziej płaskimi łatami. Coons, zaokrąglony styl o mniejszej głębokości niż Zakrzywienie. Zakrzywiony, styl z najbardziej zaokrąglonymi łatami.LinkSubList): lista krawędzi, które zostaną użyte do zbudowania powierzchni.BoolList):
Podstawa
Bool): wartość domyślna to FAŁSZ, Jeśli ustawiono PRAWDA, wyświetlona zostanie nakładka z punktami kontrolnymi krzywej.
Kształt powierzchni zależy od kierunku wybranych krawędzi; jeśli wybrano krawędzie, a wynikiem jest powierzchnia, która "zakręca" na siebie, jedna z krawędzi może wymagać listy wierzchołków w odwrotnej kolejności. Powierzchnia, która skręca się sama na sobie, prawdopodobnie będzie miała samoprzecięcia, a zatem będzie nieprawidłowym kształtem. Można to zweryfikować za pomocą narzędzia Sprawdź geometrię środowiska pacy Część.
Na przykład, jeśli dwie krzywe mają punkty:
curve1 = [a, b, c, d]
curve2 = [e, f, g]
oraz wynikową powierzchnię po użyciu Wypełnianie krzywych granicznych lub
Przekrój powierzchni jest powierzchnią skręconą, możesz utworzyć trzecią krzywą, która jest równa jednej z dwóch oryginalnych krzywych, ale z odwróconą listą punktów.
Albo
curve1 = [a, b, c, d]
curve3 = [g, f, e]
lub
curve3 = [d, c, b, a]
curve2 = [e, f, g]
powinno działać, aby wygenerować powierzchnię, która się nie skręca.
W praktyce oznacza to, że wszystkie krawędzie używane do generowania powierzchni powinny być tworzone najlepiej w tym samym kierunku zgodnym lub przeciwnym do ruchu wskazówek zegara. Przestrzeganie tej prostej zasady zwykle gwarantuje, że powierzchnia będzie podążać w najbardziej płynnym kierunku i nie będzie się skręcać.
Gdy właściwość WIDOKOświetlenie powierzchni ma wartość Jedna strona, powierzchnia zostanie pomalowana na czarno, jeśli jej normalny kierunek wskazuje na widok 3D (z dala od bieżącej widza), wskazując odwróconą powierzchnię w stosunku do innych kolorowych powierzchni.
Po lewej: krawędzie graniczne są zorientowane w tym samym kierunku, a zatem wygenerowana powierzchnia jest gładka. Po prawej: krawędzie graniczne mają przeciwne kierunki, a zatem wygenerowana powierzchnia skręca się na sobie, powodując samoprzecinanie.
Zobacz również: FreeCAD podstawy tworzenia skryptów.
Narzędzie Wypełnianie krzywych granicznych powierzchni może być używane w makrodefinicjach i z konsoli Python poprzez dodanie obiektu Surface::GeomFillSurface.
BoundaryList obiektu.FillType.import FreeCAD as App
import Draft
doc = App.newDocument()
a = App.Vector(-140, -100, 0)
b = App.Vector(175, -108, 0)
c = App.Vector(200, 101, 0)
d = App.Vector(-135, 107, 70)
points1 = [a, App.Vector(-55, -91, 65), App.Vector(35, -85, -5), b]
obj1 = Draft.make_bspline(points1)
points2 = [b, App.Vector(217, -45, 55), App.Vector(217, 35, -15), c]
obj2 = Draft.make_bspline(points2)
points3 = [c, App.Vector(33, 121, 55), App.Vector(0, 91, 15), App.Vector(-80, 121, -40), d]
obj3 = Draft.make_bspline(points3)
points4 = [d, App.Vector(-140, 0, 45), a]
obj4 = Draft.make_bspline(points4)
doc.recompute()
surf = doc.addObject("Surface::GeomFillSurface", "Surface")
surf.BoundaryList = [(obj1, "Edge1"),
(obj2, "Edge1"),
(obj3, "Edge1"),
(obj4, "Edge1")]
doc.recompute()